package com.r2coding.server.modules.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.r2coding.server.modules.user.entity.User;
import com.r2coding.server.modules.user.po.*;
import com.r2coding.server.modules.user.vo.UserInfoVo;

/**
 * @author 98k灬
 * @version v1.0.0
 * @Description : 功能描述
 * @Create on : 2023/9/24 09:45
 **/
public interface IUserService extends IService<User> {
    /**
     * 注册
     *
     * @param userRegisterPo 注册信息
     * @return 用户id
     */
    Long register(UserRegisterPo userRegisterPo);

    /**
     * 登录
     *
     * @param userLoginPo 登录信息
     * @return 访问token
     */
    String login(UserLoginPo userLoginPo);

    /**
     * 登出
     *
     * @param userId 用户id
     */
    void exit(Long userId);

    /**
     * 用户名称检查
     *
     * @param checkUserNamePo 请求信息
     * @return 密保问题
     */
    String checkUsername(CheckUserNamePo checkUserNamePo);

    /**
     * 校验密保答案
     *
     * @param checkAnswerPo 请求信息
     * @return token
     */
    String checkAnswer(CheckAnswerPo checkAnswerPo);

    /**
     * 重置密码
     *
     * @param resetPasswordPo 请求信息
     */
    void passwordReset(ResetPasswordPo resetPasswordPo);

    /**
     * 在线修改用户密码
     *
     * @param changePasswordPo 请求信息
     */
    void changePwd(ChangePasswordPo changePasswordPo);

    /**
     * 用户信息
     *
     * @return 用户信息
     */
    UserInfoVo info();
}
